/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.util.List;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;
import modelo.Cancelacion;

/**
 *
 * @author Toshiba
 */
public interface CancelacionControllerInterface {

    /**
     * Función para cargar los datos por default de una nueva cancelación
     * @return String
     */
    String crearSetup();

    /**
     * Función para la creación y persistencia de la Entidad de Cancelación.
     * (Guardar Cancelación)
     * @return String
     */
    String create();

    String createSetup();

    /**
     * Función para preparar la visualización del Detalle de la Cancelación
     * @return String
     */
    String detailSetup();

    /**
     * Función de Busqueda por id de una Cancelación a travez del EntityManager
     * @param id
     * @return Cancelacion
     */
    Cancelacion findCancelacion(Integer id);

    /**
     * Función para Transformar el Usoretiro representado a una forma que pueda
     * ser transmitida en los jsps.
     * @return Map<Object, String>
     */
    Map<Object, String> getAsString();

    /**
     * Getter de la Cancelación representada.
     * @return Cancelacion
     */
    Cancelacion getCancelacion();

    /**
     * Getter de las Cancelaciones (relacionado al atributo cancelacions)
     * @return cancelacions una lista de cancelaciones
     */
    List<Cancelacion> getCancelacions();

    /**
     * Getter de las Cancelaciones, obteniendo sus datos de la base de datos
     * @param all
     * @return q.getResultList()
     */
    List<Cancelacion> getCancelacions(boolean all);

    /**
     * Getter de Todas las Cancelaciones Disponibles
     * @return SelectItem[] Vector de Cancelaciones (en forma Generica)
     */
    SelectItem[] getCancelacionsAvailableSelectMany();

    /**
     * Getter de Todas las Cancelaciones Disponibles para el Select
     * en los jsp.
     * @return getCancelacionsAvailable(true)
     */
    SelectItem[] getCancelacionsAvailableSelectOne();

    /**
     * Getter del atributo EntityManager
     * @return EntityManager
     */
    EntityManager getEntityManager();

    int getItemCount();

    String listSetup();

    /**
     * Función para Listar las Cancelaciones
     * @return String
     */
    String listarSetup();

    /**
     * Función que Vincula y Valida JSP con la Cancelación Representado.
     * @param facesContext
     * @param component
     * @param value
     */
    void validateCreate(FacesContext facesContext, UIComponent component, Object value);

}
